CREATE OR REPLACE PACKAGE BODY EDIV2.Pack_Autoridad_Migracion_Entrada AS
/******************************************************************************
   NAME:       Pack_Autoridad__Migracion_Entrada
   PURPOSE:

   REVISIONS:
   Ver        Date        Author           Description
   ---------  ----------  ---------------  ------------------------------------
   1.0        21/5/2013   Luis Antonio Lara Capetillo       Creacion del Paquete
******************************************************************************/

PROCEDURE  Migracion_EntradaInsertarModificar(pnidDocumento NUMBER, pnidCaptEntrada NUMBER, 
						pfecha_Arribo VARCHAR2, ppuertoMaritimo VARCHAR2, pbuqueMotor VARCHAR2, 
						pbandera VARCHAR2, pmatricula VARCHAR2, ptipo_Buque NUMBER, 
						pprocedencia VARCHAR2, pdestino VARCHAR2, pnidTrafico NUMBER, 
						ppesoBruto NUMBER, ppesoNeto NUMBER, pcapitan VARCHAR2, 
						pnacionalidad VARCHAR2, ptripulantes NUMBER, ppasajeros NUMBER, 
						pterminal VARCHAR2, pcargamento VARCHAR2, pestadia NUMBER, 
						pmuelle VARCHAR2, pfacturar VARCHAR2, prfc VARCHAR2, 
						pdireccion VARCHAR2, pnidViaje NUMBER, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   Migracion_Entrada
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO Migracion_Entrada
	           (nid, nidDocumento, nidCaptEntrada, 
						fecha_Arribo, puertoMaritimo, buqueMotor, 
						bandera, matricula, tipo_Buque, 
						procedencia, destino, nidTrafico, 
						pesoBruto, pesoNeto, capitan, 
						nacionalidad, tripulantes, pasajeros, 
						terminal, cargamento, estadia, 
						muelle, facturar, rfc, 
						direccion, nidViaje)
    VALUES     (seq_Migracion_Entrada.nextval, pnidDocumento, pnidCaptEntrada, 
						to_date(pfecha_Arribo,'DD/MM/YYYY HH24:MI:SS'), ppuertoMaritimo, pbuqueMotor, 
						pbandera, pmatricula, ptipo_Buque, 
						pprocedencia, pdestino, pnidTrafico, 
						ppesoBruto, ppesoNeto, pcapitan, 
						pnacionalidad, ptripulantes, ppasajeros, 
						pterminal, pcargamento, pestadia, 
						pmuelle, pfacturar, prfc, 
						pdireccion, pnidViaje);
  ELSE
    UPDATE Migracion_Entrada
    SET    nidDocumento=pnidDocumento, nidCaptEntrada=pnidCaptEntrada, 
		fecha_Arribo=to_date(pfecha_Arribo,'DD/MM/YYYY HH24:MI:SS'), puertoMaritimo=ppuertoMaritimo, buqueMotor=pbuqueMotor, 
		bandera=pbandera, matricula=pmatricula, tipo_Buque=ptipo_Buque, 
		procedencia=pprocedencia, destino=pdestino, nidTrafico=pnidTrafico, 
		pesoBruto=ppesoBruto, pesoNeto=ppesoNeto, capitan=pcapitan, 
		nacionalidad=pnacionalidad, tripulantes=ptripulantes, pasajeros=ppasajeros, 
		terminal=pterminal, cargamento=pcargamento, estadia=pestadia, 
		muelle=pmuelle, facturar=pfacturar, rfc=prfc, 
		direccion=pdireccion, nidViaje=pnidViaje
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Migracion_Entrada_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Migracion_Entrada_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;

PROCEDURE  Migracion_EntradaConsultar(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT nid, nidDocumento, nidCaptEntrada, 
						fecha_Arribo, puertoMaritimo, buqueMotor, 
						bandera, matricula, tipo_Buque, 
						procedencia, destino, nidTrafico, 
						pesoBruto, pesoNeto, capitan, 
						nacionalidad, tripulantes, pasajeros, 
						terminal, cargamento, estadia, 
						muelle, facturar, rfc, 
						direccion, nidViaje
    FROM   Migracion_Entrada
    WHERE  nidDocumento=pNidDocumento;
    
  pTransaccion := 1;
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Migracion_EntradaDetalleXML(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pEncabezado OUT cursor_type,
                           pDatos OUT cursor_type, pIncidencias OUT cursor_type)
AS
BEGIN
  OPEN pEncabezado FOR
    SELECT d.nid, d.codigo, d.fechacreacion,
           (us.nombre ||' '||us.apellidopat||' '||us.apellidomat) as nombre, d.nidusuario
    FROM   documento d, usuarios us
    WHERE  d.nid=pnidDocumento
    AND    d.nidusuario=us.nid;
    
  OPEN pDatos FOR
    SELECT nid, nidDocumento, nidCaptEntrada, 
						fecha_Arribo, puertoMaritimo, buqueMotor, 
						bandera, matricula, tipo_Buque, 
						procedencia, destino, nidTrafico, 
						pesoBruto, pesoNeto, capitan, 
						nacionalidad, tripulantes, pasajeros, 
						terminal, cargamento, estadia, 
						muelle, facturar, rfc, 
						direccion, nidViaje
    FROM   Migracion_Entrada
    WHERE  nidDocumento=pNidDocumento;
    
  OPEN pIncidencias FOR
    SELECT i.fechaemision, i.descripcion, us.nombre
    FROM   incidencia i, usuarios us
    WHERE  niddocumento=pnidDocumento
    AND    i.nidusuario=us.nid;
    
    pTransaccion := 1;
    
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

--otros

END Pack_Autoridad__Migracion_Entrada;
